#!/bin/bash

# GeoIP2自动安装脚本
# 适用于Ubuntu/Debian/CentOS系统

echo "🚀 开始安装GeoIP2库和数据库..."

# 检测操作系统
if [ -f /etc/os-release ]; then
    . /etc/os-release
    OS=$NAME
    VER=$VERSION_ID
else
    echo "❌ 无法检测操作系统类型"
    exit 1
fi

echo "📋 检测到操作系统: $OS $VER"

# 安装Python依赖
echo "📦 安装Python依赖包..."
if command -v pip3 &> /dev/null; then
    pip3 install geoip2 requests
elif command -v pip &> /dev/null; then
    pip install geoip2 requests
else
    echo "❌ 未找到pip或pip3，请先安装Python包管理器"
    exit 1
fi

# 创建GeoIP目录
echo "📁 创建GeoIP目录..."
sudo mkdir -p /usr/share/GeoIP

# 下载GeoIP2数据库
echo "⬇️  下载GeoIP2数据库..."
DB_URL="https://git.io/GeoLite2-Country.mmdb"
DB_PATH="/usr/share/GeoIP/GeoLite2-Country.mmdb"

# 尝试下载数据库（这里使用一个示例URL，实际需要从MaxMind获取）
echo "⚠️  注意：由于MaxMind需要注册账户，请手动下载数据库文件"
echo "📖 请访问: https://dev.maxmind.com/geoip/geoip2/geolite2/"
echo "📖 下载 GeoLite2-Country.mmdb 文件"
echo "📖 然后运行: sudo cp GeoLite2-Country.mmdb /usr/share/GeoIP/"

# 检查是否已有数据库文件
if [ -f "$DB_PATH" ]; then
    echo "✅ 发现现有数据库文件: $DB_PATH"
    echo "🔧 设置文件权限..."
    sudo chmod 644 "$DB_PATH"
else
    echo "❌ 未找到数据库文件，请手动下载并放置到 $DB_PATH"
fi

# 测试Python导入
echo "🧪 测试Python导入..."
python3 -c "
try:
    import geoip2.database
    print('✅ geoip2库导入成功')
except ImportError as e:
    print(f'❌ geoip2库导入失败: {e}')
    exit(1)
"

if [ $? -eq 0 ]; then
    echo "🎉 GeoIP2安装完成！"
    echo "📝 请确保数据库文件已放置在正确位置"
    echo "🚀 现在可以运行 nginx_log_ddos_alert.py 脚本了"
else
    echo "❌ GeoIP2安装失败，请检查错误信息"
    exit 1
fi
